La sélection de fontes et de couleurs se fait à peu près comme la sélection de fichiers. Il y a trois manières de les implémenter, en tant que widget, en tant que dialogue ou en tant que boutons. Les valeurs sélectionnées par l'utilisateur sont récupérées par le biais d'attributs ou de fonctions appropriées. Nous allons d'abord aborder la sélection de fontes, on utilise:
Le paramètre String est le titre de la fenêtre de dialogue. Il y a une série d'attributs et des fonctions pour gérer l'affichage de ces widgets. Toutes assez simples. Avec un dialogue, vous pouvez utiliser les types ResponseId; et avec vous utiliserez:
Vous utiliserez alors la fonction suivante pour obtenir le nom de la fonte sélectionnée:
Le nom de la fonte sera quelque chose comme "Courier Italic 10" ou "URW Gothic L Semi-Bold Oblique 16", tout ce qui est disponible sur votre système. Comme vous pouvez le voir sur l'image suivante, l'utilisateur peut sélectionner une famille, un style, une taille.
Chercher et obtenir des informations sur les fontes est documenté dans Graphics.UI.Gtk.Pango.Font. Beaucoup de fonctionnalités avancées sont supportées, mais l'utilisateur de base aura seulement besoin de savoir comment obtenir une description (FontDescription) à partir du nom d'une fonte.
Une fois que l'on a la description (FontDescription) on peut utiliser:
La sélection d'une couleur est analogue à la sélection d'une fonte. Vous avez trois possibilités:
Avec un bouton ColorButton, utilisez
puis:
Il y a aussi une fonction (et un attribut) pour obtenir la valeur Alpha (l'opacité) si cette fonctionnalité a été activée.
La fenêtre par défaut de sélection de couleur, ressemble à cela:
Une couleur est un type de données composées de trois entiers Int, pouvant aller de 0 à 65535, qui spécifient respectivement les composantes Rouge, Vert et Bleu. Il y a des fonctions pour définir les couleurs d'avant-plan, d'arrière-plan, les textes et les couleurs d'un widget et ces fonctions prennent un paramètre StateType Il y a: StateNormal, StateActive, StatePreLight, StateSelected et StateInsensitive et varient suivant que le widget est actif, le pointeur de la souris est sur le widget, si le widget est sélectionné, …. L'affichage des widgets a plusieurs fonctionnalités, mais pour changer la couleur d'une étiquette, vous pouvez simplement utiliser StateNormal et la couleur Color que l'utilisateur a choisi:
Si on ne connaît pas l'état StateType du widget, on peut utiliser cette fonction:
Voici un exemple de sélection de fonte et de couleur.
La fenêtre se redimensionne automatiquement pour s'adapter à la fonte la plus large.